package mju.cxf.utils;

import mju.cxf.context.BaseContext;

import java.lang.reflect.Field;
import java.time.LocalDateTime;

public class TimestampUpdaterUtils {
    public static <T> void saveUtil(T entity) {
        Class<?> aClass = entity.getClass();
        // 获取所有字段
        Field[] fields = aClass.getDeclaredFields();
        for (Field field : fields) {
            // 检查字段名是否为目标字段
            if ("createTime".equals(field.getName()) ||
                    "createUser".equals(field.getName()) ||
                    "updateTime".equals(field.getName()) ||
                    "updateUser".equals(field.getName())) {

                field.setAccessible(true); // 设置可访问性

                try {
                    // 获取字段名
                    String fieldName = field.getName();
                    // 根据需要设置字段值
                    if ("createTime".equals(fieldName)) {
                        field.set(entity,LocalDateTime.now()); // 设为当前时间戳
                    } else if ("createUser".equals(fieldName)) {
                        field.set(entity, BaseContext.getCurrentId()); // 设置示例用户名
                    } else if ("updateTime".equals(fieldName)) {
                        field.set(entity, LocalDateTime.now()); // 设为当前时间戳
                    } else if ("updateUser".equals(fieldName)) {
                        field.set(entity, BaseContext.getCurrentId()); // 设置示例更新用户名
                    }

                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                }
            }
        }
    }
    public static <T> void updateUtil(T entity) {
        Class<?> aClass = entity.getClass();
        // 获取所有字段
        Field[] fields = aClass.getDeclaredFields();
        for (Field field : fields) {
            // 检查字段名是否为目标字段
            if ("updateTime".equals(field.getName()) ||
                    "updateUser".equals(field.getName())) {

                field.setAccessible(true); // 设置可访问性

                try {
                    // 获取字段名
                    String fieldName = field.getName();
                    // 根据需要设置字段值
                    if ("updateTime".equals(fieldName)) {
                        field.set(entity, LocalDateTime.now()); // 设为当前时间戳
                    } else if ("updateUser".equals(fieldName)) {
                        field.set(entity, BaseContext.getCurrentId()); // 设置示例更新用户名
                    }
                } catch (IllegalAccessException e) {
                    e.printStackTrace();
                }
            }
        }
    }
}
